package com.scheduling.schedule.dto;

import com.scheduling.schedule.entity.ProductionTask;
import com.scheduling.schedule.entity.ScheduleDetail;
import com.scheduling.schedule.entity.WorkOrder;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 排产结果DTO
 *
 * @author 开发团队
 */
@Data
public class ScheduleResult {

    /**
     * 排产是否成功
     */
    private boolean success;

    /**
     * 错误信息（排产失败时）
     */
    private String errorMessage;

    /**
     * 排产开始时间
     */
    private LocalDateTime scheduleStartTime;

    /**
     * 排产结束时间
     */
    private LocalDateTime scheduleEndTime;

    /**
     * 总体设备利用率
     */
    private BigDecimal totalUtilization;

    /**
     * 算法生成的工单列表（新增）
     */
    private List<WorkOrder> generatedWorkOrders;

    /**
     * 生产任务列表
     */
    private List<ProductionTask> productionTasks;

    /**
     * 排产详情列表
     */
    private List<ScheduleDetail> scheduleDetails;

    /**
     * 算法执行耗时（毫秒）
     */
    private long executionTimeMs;

    /**
     * 算法类型
     */
    private String algorithmType;

    /**
     * 算法描述
     */
    private String algorithmDescription;

    /**
     * 参与排产的工单数量
     */
    private int totalWorkOrders;

    /**
     * 生成的生产任务数量
     */
    private int totalTasks;

    /**
     * 涉及的机器数量
     */
    private int totalMachines;
} 